/**
 * Created by Administrator on 2018/11/7.
 */

//全局基基础数据

var baseURL = '';
var educationData;
var departmentData;
var positionData;
var statusData;
var sexData = [{
	id: 0,
	name: '女'
}, {
	id: 1,
	name: '男'
}];


var marriedData = [{
	id: true,
	name: '已婚'
}, {
	id: false,
	name: '未婚'
}];


//强制同步执行
$.ajaxSettings.async = false;
//同步读取jsono文件数据
$.getJSON("jsondata/educationData.json", function(d) {
	educationData = d;
});
$.getJSON(baseURL + 'department/list', function(d) {
	departmentData = d;
});
$.getJSON(baseURL + 'position/list', function(d) {
	positionData = d;
});
$.getJSON("jsondata/statusData.json", function(d) {
	statusData = d;
});
$.ajaxSettings.async = true;




$(function() {
	//初始化input标签

	// $('#state').combobox({
	// 	editable:true;
	// });

	//查询用户
	$('#s_empName').textbox();

	//查询入职时间
	$('#s_hireDate').datebox({
		editable: false
	});
	//查询离职时间
	$('#s_hireDate_end').datebox({
		editable: false
	});

	//员工号
	$('#input_employeeId').textbox({
		editable: false
	});

	//数据校验
	//电话
	$('input[name="tel"]').textbox({});

	//邮箱 validType="email"
	$('input[name="email"]').textbox({
		validType: 'email',
	});

	//身份证
	$('input[name="sid"]').textbox({
	});

	//家庭住址
	$('input[name="adders"]').textbox({
	});

	//入职日期
	$('input[name="hireDate"]').datebox({
		required: 'required'
	});

	// 离职日期:
	$('#input_termDate').datebox({
	});
	//数据校验


	//部门:
	$('#input_departmentId').combobox({
		//url: baseURL+'department/list',
		data: departmentData,
		valueField: 'departmentId',
		textField: 'name',
		panelHeight: 'auto',
		editable: false
	});

	//职位:
	$('#input_positionId').combobox({
		//url: baseURL+'position/list',
		data: positionData,
		valueField: 'positionId',
		textField: 'name',
		panelHeight: 'auto',
		editable: false
	});

	//性别
	$('#input_sex').combobox({
		//url: baseURL+'position/list',
		data: sexData,
		valueField: 'id',
		textField: 'name',
		panelHeight: 'auto',
		editable: false
	});

	//婚否
	$('#input_married').combobox({
		//url: baseURL+'position/list',
		data: marriedData,
		valueField: 'id',
		textField: 'name',
		panelHeight: 'auto',
		editable: false

	});

	//学历:
	$('#input_education').combobox({
		//url: baseURL+'position/list',
		//method:'get',
		data: educationData,
		valueField: 'educationId',
		textField: 'name',
		panelHeight: 'auto',
		editable: false
	});

	//状态:
	$('#input_status').combobox({
		//url: baseURL+'position/list',
		//method="get",
		data: statusData,
		valueField: 'id',
		textField: 'name',
		panelHeight: 'auto',
		editable: false
	});

	//新增用户初始化参数
	//编号  
	$('#input_uid').textbox({
		editable: false
	});

	//部门:
	$('#input_depId').combobox({
		//url: baseURL+'department/list',
		data: departmentData,
		valueField: 'departmentId',
		textField: 'name',
		panelHeight: 'auto',
		editable: false
	});

	//状态:
	$('#input_statuss').combobox({
		//url: baseURL+'position/list',
		//method="get",
		data: statusData,
		valueField: 'id',
		textField: 'name',
		panelHeight: 'auto',
		editable: false
	});

	$("#input_createDate").datebox({
		editable: false
	});


	$("#input_employeeIds").textbox({
		editable: false
	});

	$("#input_userName").textbox({

	});

	$("#input_userPwd").textbox({

	});


	// 初始化分页表格
	$('#dg').datagrid({
		url: baseURL + 'employee/list',
		//读取本地json文件，必须使用设置为get请求模式,
		method: 'get', //这个是最重要的，不写这个table加载不出来
		// title : '用户表',

		//在请求远程数据的时候发送额外的参数
		queryParams: {
			//封装请求参数

		},

		fitColumns: true,

		//固定表头 生成滚动条
		fit: true,
		striped: true, //这是奇偶行颜色交替变换
		loadMsg: '数据加载中.....',
		singleSelect: true,
		//对返回的数据进行预处理
		loadFilter: function(data) {
			return loadFilter(data); //自定义过滤方法
		},
		columns: [
			[{
				field: 'employeeId',
				title: 'id',
				width: 100,
				checkbox: true,
			}, {
				field: 'departmentId',
				title: '部门',
				width: 100,

			}, {
				field: 'positionId',
				title: '职位',
				width: 100,

			}, {
				field: 'sex',
				title: '性别',
				width: 100,

			}, {
				field: 'name',
				title: '姓名',
				width: 100,

			}, {
				field: 'married',
				title: '婚否',
				width: 100,

			},
			{
				field: 'education',
				title: '学历',
				width: 100,
			},
			{
				field: 'tel',
				title: '电话',
				width: 100,

			},
			{
				field: 'email',
				title: 'Email',
				width: 100,
			},
			{
				field: 'sid',
				title: '身份证号',
				width: 100,

			},
			{
				field: 'adders',
				title: '家庭地址',
				width: 100,

			},
			{
				field: 'hireDate',
				title: '入职时间',
				width: 100,

			},
			{
				field: 'termDate',
				title: '离职时间',
				width: 100,

			},
			{
				field: 'status',
				title: '状态',
				width: 100,

			}
			]
		],
		pagination: true,
		rownumbers: true,
		pageSize: 20,
		toolbar: '#tb',

	});

	// 初始化对话窗口
	$('#dlg').dialog({
		title: '用户窗口',
		closed: true,
		buttons: '#dlg-buttons',
		modal: true,
	});


	// 重新加载对话窗口
	$.parser.parse($("#dlg").parent());





});



//过滤后端传递到前端的值 
function loadFilter(data) {

	if (data.total != 0) {
		for (i = 0; i < data.rows.length; i++) {
			//处理部门 
			if (data.rows[i].departmentId != null) {
				data.rows[i].departmentId = departmentData[data.rows[i].departmentId - 1].name;
			}
			//处理职位
			if (data.rows[i].positionId != null) {
				data.rows[i].positionId = positionData[data.rows[i].positionId - 1].name;
			}
			//处理性别
			if (data.rows[i].sex != null) {
				data.rows[i].sex = sexData[data.rows[i].sex].name;
			}

			// 预处理婚否
			if (data.rows[i].married) {
				data.rows[i].married = "已婚";
			} else {
				data.rows[i].married = "未婚";
			}

			//处理学历
			if (data.rows[i].education != null) {
				data.rows[i].education = educationData[data.rows[i].education - 1].name;
			}
			//处理入职时间
			if (data.rows[i].hireDate != null) {
				// 对于json格式的日期的转换 1446393600000 
				var date = new Date(data.rows[i].hireDate);
				var y = date.getFullYear();
				var m = date.getMonth() + 1;
				var d = date.getDate();
				// 转换成String类型的yyyy-MM-dd
				var time = y + '-' + m + '-' + d;
				data.rows[i].hireDate = time;

			}
			// 离职时间
			if (data.rows[i].termDate != null) {
				// 对于json格式的日期的转换 1446393600000 
				var date = new Date(data.rows[i].termDate);
				var y = date.getFullYear();
				var m = date.getMonth() + 1;
				var d = date.getDate();
				// 转换成String类型的yyyy-MM-dd
				var time = y + '-' + m + '-' + d;
				data.rows[i].termDate = time;

			}

			//预处理状态
			if (data.rows[i].status != null) {
				data.rows[i].status = statusData[data.rows[i].status - 1].name;
			}




		}
	} else {
		data.rows = [];
	}





	var pageSize = $('#dg').datagrid('getPager').data("pagination").options.pageSize;
	//不足pageSize大小填充空白数据项
	while (data.rows.length < pageSize) {
		data.rows.push({});
	}

	return data;
}





// 修改
function update() {
	//得到要修改的一行
	var selectRows = $('#dg').datagrid('getSelected');

	// selectRows.sex 得到一个的某个值

	if (selectRows) {


		//员工号设置为只读，但又能提交到后台
		$("#input_employeeId").attr("readonly", true);
		//$('#input_employeeId').attr('disabled', true);
		//div-显示
		$('#div_employeeId').show();

		//离职时间-可用
		$("#input_termDate").datebox({
			disabled: false
		});
		$('#div_termDate').show();

		$('#dlg').dialog('open').dialog('setTitle', '编辑');



		//把选中的一行加载到	
		$('#fm').form('load', selectRows);

		//重置DirtyFileds数据
		$('#fm').form('resetDirty');



	} else {
		$.messager.alert("系统提示", "请选择一条要修改的数据！");
	}

}





// 添加
function add() {
	//编号设置不可修改
	$('#input_employeeId').attr('disabled', true);
	//div隐藏
	// $('#div_employeeId').hide();

	//离职时间不可用
	$("#input_termDate").datebox({
		disabled: true
	});
	// $('#div_termDate').hide();

	//$("#form_termDate").css("display","none");
	$('#dlg').dialog('open').dialog('setTitle', '新增');
	$('#fm').form('clear');
	$('#fm').form('resetDirty');


}

// 保存按钮的动作
function save() {
	var operation = '';
	// console.log($('#dlg').panel('options'));
	//新增还编辑
	if (($('#dlg').panel('options').title) == '编辑') {
		operation = 'modif';
	} else {
		operation = 'add';
	}

	$('#fm').form('submit', {
		url: baseURL + 'employee/' + operation,
		//只提交改变的字段的信息
		dirty: true,
		queryParams: {
			'employeeId': $('#input_employeeId').textbox('getValue')
		},
		onSubmit: function(data) {
			//进行表单验证  如果返回false阻止提交  	

			return $(this).form('validate');
		},

		success: function(str) {
			return MyResultFunction(str);
		}

	});

}


//刷新
function reload() {
	$('#dg').datagrid('reload');
}




function del() {
	var rows = $('#dg').datagrid('getSelections');
	if (rows.length > 0) {
		$.messager.confirm('确认操作', '你真的要删除当前选中的条记录吗?', function(r) {
			if (r) {
				// 得到删除的的记录id
				var ids = [];
				for (var i = 0; i < rows.length; i++) {
					ids.push(rows[i].employeeId);
				}
				// Ajax请求
				$.post(baseURL + 'employee/remove', {
					ids: ids.join(','),
				}, function(result) {
					return MyResultFunction(result);
				}, 'text');
			}
		});
	}
}

// 查询
function findPage() {
	// 添加多项查询条件选项
	var p = new Object();
	if ($.trim($('input[name="userName"]').val()) != "") {
		p['name'] = $.trim($('input[name="userName"]').val());
	}

	alert(p);
	$('#dg').datagrid('load', p);

}



//index查找 json数组中查找指定的元素并返回index
function findFirstIndex(arrjson, text) {
	// 若元素不存在在数组中返回-1
	let firstVal = -1;
	for (let i = 0; i < arrjson.length; i++) {

		if (arrjson[i].name == text) {
			firstVal = i + 1;
			return firstVal;
			break;
		}
	}
	return firstVal;
}



//重置事件
function reset() {
	$("#s_empName").textbox('setValue', "");
	$("#s_hireDate").datebox('setValue', "");
	$("#s_hireDate_end").datebox('setValue', "");
	//dg请求参数重置空
	$('#dg').datagrid('options').queryParams = {};
	$('#dg').datagrid('reload');
}

//查询
function mysearch() {

	//根据所选择下拉选项不同，查询不同内容
	//department 部门 position 职位  name姓名 sex性别

	// var searchFactorValue = $.trim( $('#state').combobox('getValue') );
	//var p = new Object();
	//得到查询input标签的值，去除前后空格
	var queryParamUserValue = $.trim($('#s_empName').textbox('getValue'));
	var queryParamHireDateValue = $.trim($('#s_hireDate').datetimebox('getValue'));

	var queryParams = $('#dg').datagrid('options').queryParams;

	// if(searchFactorValue!=""){
	// 	queryParams.searchFactor = searchFactorValue;
	// }

	if (queryParamUserValue != "") {
		queryParams.queryParamUser = queryParamUserValue;
	}
	if (queryParamHireDateValue != "") {
		queryParams.queryParamHireDate = queryParamHireDateValue;
	}

	if ((queryParamUserValue == "") && queryParamHireDateValue == "") {
		$('#dg').datagrid('options').queryParams = {};
	} else {
		$('#dg').datagrid('options').queryParams = queryParams;
	}
	$('#dg').datagrid('reload');
	//dg请求参数重置空


	// if (s_empName != "" && s_hireDate !="" && s_hireDate_end !="") {
	// 	// Ajax请求
	// 	$.post(baseURL + 'employee/search', {
	// 		//封装请求数据
	// 		queryParams: s_empName,
	// 		queryParams1: s_hireDate,
	// 		queryParams2:s_hireDate_end
	// 	}, function(result) {
	// 		$('#dg').datagrid('loadData', result);
	// 	});
	// }
}

function dateFormat(date, format) {
	if (null == date || "" == date) {
		return "";
	}
	if (date == '' || date == null) {
		return '';
	}
	date = new Date(date);
	date.setHours(date.getHours() - 14);
	var o = {
		'M+': date.getMonth() + 1, //month
		'd+': date.getDate(), //day
		'H+': date.getHours(), //hour
		'm+': date.getMinutes(), //minute
		's+': date.getSeconds(), //second
		'q+': Math.floor((date.getMonth() + 3) / 3), //quarter
		'S': date.getMilliseconds() //millisecond
	};
	if (/(y+)/.test(format))
		format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));

	for (var k in o)
		if (new RegExp('(' + k + ')').test(format))
			format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));

	return format;
}

function MyResultFunction(str) {
	//对后端后回的结果处理
	try {
		//由JSON字符串转换为JSON对象

		var data = JSON.parse(str);
		//alert(data.code);
		if (data.code != 200) {
			//处理后台返回错误信息
			$.messager.show({
				title: 'Error',
				msg: data.message
			});
		} else {
			//处理后台返回正确信息
			$.messager.show({
				title: 'OK',
				msg: data.message
			});
			$('#dlg').dialog('close');
			$('#dlguser').dialog('close');
			$('#dg').datagrid('reload');
			//$('#dlguser').datagrid('reload'); 
			//该语句会导致所有能够执行成功的增删改报出“参数异常错误”
		}
	} catch (err) {
		$.messager.show({
			title: 'Error',
			msg: "操作失败！ 数据非法错误"
		});
		console.log(err)
		console.log(err.message);
	}


}

//在员工表创建用户
function createUser() {
	//得到要修改的一行
	var selectRows = $('#dg').datagrid('getSelected');

	// selectRows.sex 得到一个的某个值
	//"employeeId":1,"departmentId":1

	if (selectRows) {

		// Ajax请求
		$.post(baseURL + 'employee/create', {
			employeeId:selectRows.employeeId,
			name:selectRows.name,
			departmentId:findFirstIndex(departmentData,selectRows.departmentId),
			sid:selectRows.sid
		}, function(result) {
			return MyResultFunction(result);
		}, 'text');

	} else {
		$.messager.alert("系统提示", "请选择一条要修改的数据！");
	}
}


